<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // promise里的then方法
        // 一、基本使用
        // 每一个promise对象都有一个then方法,then会接收两种回调,onresolved和onrejected
        let p = new Promise((resolve,reject)=>{
            resolve('success');
            // reject('error')
        })
        // p.then(function(res){
        //     // onresolved :成功状态的promise会执行onresolve回调函数
        //     console.log('成功了', res); // res 是实例里面resolve回调 一个promise 对象里面PromiseRuselt对应值
        // },function(err){
        //     // onrejected :失败状态的promise会执行onrejected回调函数
        //     console.log('失败了',err); // err 是实例里面reject回调 一个promise 对象里面PromiseRuselt对应值
        // })
            // 可以把 onRejected 省略掉 

        // then 的返回值

        // 1.没有返回值:默认得到的是一个成功的promise对象 PromiseRuselt 是undefined
        // 2.返回值:会把返回值作为下一个promise对象的PromiseRuselt结果返还;得到的是一个promise
        // 3.返回一个promise对象,then 会把返回的这个promise对象原封不动的返还出来
        // let thenResult = p.then(res=>{
        //     console.log('成功了');
        //     return new Promise((resovle,reject)=>{
        //         resolve('返还的成功值');
        //     })
        // })
        // console.log(thenResult);


        // 4.then里抛出错误清况
        // 会返还一个rejected  状态 的promise 对象,promiseResult 值就是报错
        // let thenResult = p.then(res=>{
        //     console.log('成功了',res);
        //     throw Error('错了')
        // })
        // console.log(thenResult);



        // 总结:无论如何,promise的then方法 都会返还一个promise对象。每个promise对象都会有一个then方法
        let p2 = p.then(res=>{
            return 123;
        })
        let p3 = p2.then(res=>{
            console.log(res);
        })
        p3.then(res=>{
            console.log(res);
        })

        

    </script>
</body>
</html>